package model

import common.Config
import model.inter.Blockable
import java.awt.Rectangle

/**
 * 这里是所有的View的父类；
 */
abstract class View(open var width:Int=Config.DEFAULT_VIEW_WIDTH,open var height:Int=Config.DEFAULT_VIEW_HEIGHT, open var x:Int=0, open var y:Int=0) {


    init {
        checkXvalid()
        checkYvalid()
    }

    /**
     * 画自身的一个方法
     */
    abstract fun draw();

    fun checkXvalid(){

        if(x<=0){
            x=0;
        }
        if(x>Config.DEFAULT_WINDOW_WIDTH-width){
            x=Config.DEFAULT_WINDOW_WIDTH;
        }
    }

    fun  checkYvalid(){

        if(y<=0){
            y=0;
        }
        if(y>Config.DEFAULT_WINDOW_HEIGHT-height){
            y=Config.DEFAULT_WINDOW_HEIGHT
        }
    }

    fun checkPostionValid(){
        checkXvalid()
        checkYvalid()
    }

    /**
     * 通过传入格子的坐标，我们可以设置相应的x和y的值
     */
    open fun setPostion(col:Double,vol:Double){
        x=(col*width).toInt();
        y=(vol*height).toInt();
    }
    /**
     * 通过传入格子的坐标，我们可以设置相应的x和y的值
     */
    fun setPostion(col:Int,vol:Int){
       setPostion(col.toDouble(),vol.toDouble())
    }


    fun getRect(): Rectangle {
        return Rectangle(x,y,width,height)
    }
}